# gazelle:ignore

package(default_visibility = ["//tools/build_defs:internal_pkg"])

licenses(["notice"])  # Apache 2.0

load("@io_bazel_rules_go//proto:def.bzl", "go_proto_library")
load("//third_party/rules_protobuf/objc:rules.bzl", "objc_proto_compile")
load("//tools:objc.bzl", "tink_objc_proto_library")

# -----------------------------------------------
# common
# -----------------------------------------------
proto_library(
    name = "common_proto",
    srcs = [
        "common.proto",
    ],
)

cc_proto_library(
    name = "common_cc_proto",
    deps = [":common_proto"],
)

java_proto_library(
    name = "common_java_proto",
    deps = [":common_proto"],
)

java_lite_proto_library(
    name = "common_java_proto_lite",
    deps = [":common_proto"],
)

go_proto_library(
    name = "common_go_proto",
    importpath = "github.com/google/tink/proto/common_go_proto",
    proto = ":common_proto",
)

objc_proto_compile(
    name = "common_objc_pb",
    protos = ["common.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# tink
# -----------------------------------------------
proto_library(
    name = "tink_proto",
    srcs = [
        "tink.proto",
    ],
    deps = [
        ":common_proto",
    ],
)

cc_proto_library(
    name = "tink_cc_proto",
    deps = [":tink_proto"],
)

java_proto_library(
    name = "tink_java_proto",
    deps = [":tink_proto"],
)

java_lite_proto_library(
    name = "tink_java_proto_lite",
    deps = [":tink_proto"],
)

go_proto_library(
    name = "tink_go_proto",
    importpath = "github.com/google/tink/proto/tink_go_proto",
    proto = ":tink_proto",
    deps = [":common_go_proto"],
)

objc_proto_compile(
    name = "tink_objc_pb",
    protos = ["tink.proto"],
    tags = ["manual"],
)

filegroup(
    name = "public_cc_protos",
    srcs = [
        ":config_cc_proto",
        ":tink_cc_proto",
    ],
)

# -----------------------------------------------
# config
# -----------------------------------------------
proto_library(
    name = "config_proto",
    srcs = [
        "config.proto",
    ],
)

cc_proto_library(
    name = "config_cc_proto",
    deps = [":config_proto"],
)

java_proto_library(
    name = "config_java_proto",
    deps = [":config_proto"],
)

java_lite_proto_library(
    name = "config_java_proto_lite",
    deps = [":config_proto"],
)

go_proto_library(
    name = "config_go_proto",
    importpath = "github.com/google/tink/proto/config_go_proto",
    proto = ":config_proto",
)

objc_proto_compile(
    name = "config_objc_pb",
    protos = ["config.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# aes-siv
# -----------------------------------------------
proto_library(
    name = "aes_siv_proto",
    srcs = [
        "aes_siv.proto",
    ],
)

cc_proto_library(
    name = "aes_siv_cc_proto",
    deps = [":aes_siv_proto"],
)

java_proto_library(
    name = "aes_siv_java_proto",
    deps = [":aes_siv_proto"],
)

java_lite_proto_library(
    name = "aes_siv_java_proto_lite",
    deps = [":aes_siv_proto"],
)

go_proto_library(
    name = "aes_siv_go_proto",
    importpath = "github.com/google/tink/proto/aes_siv_proto",
    proto = ":aes_siv_proto",
)

objc_proto_compile(
    name = "aes_siv_objc_pb",
    protos = ["aes_siv.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# rsa_ssa_pkcs1
# -----------------------------------------------
proto_library(
    name = "rsa_ssa_pkcs1_proto",
    srcs = [
        "rsa_ssa_pkcs1.proto",
    ],
    deps = [
        ":common_proto",
    ],
)

cc_proto_library(
    name = "rsa_ssa_pkcs1_cc_proto",
    deps = [":rsa_ssa_pkcs1_proto"],
)

java_proto_library(
    name = "rsa_ssa_pkcs1_java_proto",
    deps = [":rsa_ssa_pkcs1_proto"],
)

java_lite_proto_library(
    name = "rsa_ssa_pkcs1_java_proto_lite",
    deps = [":rsa_ssa_pkcs1_proto"],
)

go_proto_library(
    name = "rsa_ssa_pkcs1_go_proto",
    importpath = "github.com/google/tink/proto/rsa_ssa_pkcs1_go_proto",
    proto = ":rsa_ssa_pkcs1_proto",
    deps = [":common_go_proto"],
)

objc_proto_compile(
    name = "rsa_ssa_pkcs1_objc_pb",
    protos = ["rsa_ssa_pkcs1.proto"],
    tags = ["manual"],
    deps = [":common_objc_pb"],
)

# -----------------------------------------------
# rsa_ssa_pss
# -----------------------------------------------
proto_library(
    name = "rsa_ssa_pss_proto",
    srcs = [
        "rsa_ssa_pss.proto",
    ],
    deps = [
        ":common_proto",
    ],
)

cc_proto_library(
    name = "rsa_ssa_pss_cc_proto",
    deps = [":rsa_ssa_pss_proto"],
)

java_proto_library(
    name = "rsa_ssa_pss_java_proto",
    deps = [":rsa_ssa_pss_proto"],
)

java_lite_proto_library(
    name = "rsa_ssa_pss_java_proto_lite",
    deps = [":rsa_ssa_pss_proto"],
)

go_proto_library(
    name = "rsa_ssa_pss_go_proto",
    importpath = "github.com/google/tink/proto/rsa_ssa_pss_go_proto",
    proto = ":rsa_ssa_pss_proto",
    deps = [":common_go_proto"],
)

objc_proto_compile(
    name = "rsa_ssa_pss_objc_pb",
    protos = ["rsa_ssa_pss.proto"],
    tags = ["manual"],
    deps = [":common_objc_pb"],
)

# -----------------------------------------------
# ecdsa
# -----------------------------------------------
proto_library(
    name = "ecdsa_proto",
    srcs = [
        "ecdsa.proto",
    ],
    deps = [
        ":common_proto",
    ],
)

cc_proto_library(
    name = "ecdsa_cc_proto",
    deps = [":ecdsa_proto"],
)

java_proto_library(
    name = "ecdsa_java_proto",
    deps = [":ecdsa_proto"],
)

java_lite_proto_library(
    name = "ecdsa_java_proto_lite",
    deps = [":ecdsa_proto"],
)

go_proto_library(
    name = "ecdsa_go_proto",
    importpath = "github.com/google/tink/proto/ecdsa_go_proto",
    proto = ":ecdsa_proto",
    deps = [":common_go_proto"],
)

objc_proto_compile(
    name = "ecdsa_objc_pb",
    protos = ["ecdsa.proto"],
    tags = ["manual"],
    deps = [":common_objc_pb"],
)

# -----------------------------------------------
# ed25519
# -----------------------------------------------
proto_library(
    name = "ed25519_proto",
    srcs = [
        "ed25519.proto",
    ],
)

cc_proto_library(
    name = "ed25519_cc_proto",
    deps = [":ed25519_proto"],
)

java_proto_library(
    name = "ed25519_java_proto",
    deps = [":ed25519_proto"],
)

java_lite_proto_library(
    name = "ed25519_java_proto_lite",
    deps = [":ed25519_proto"],
)

go_proto_library(
    name = "ed25519_go_proto",
    importpath = "github.com/google/tink/proto/ed25519_proto",
    proto = ":ed25519_proto",
)

objc_proto_compile(
    name = "ed25519_objc_pb",
    protos = ["ed25519.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# hmac
# -----------------------------------------------
proto_library(
    name = "hmac_proto",
    srcs = [
        "hmac.proto",
    ],
    deps = [":common_proto"],
)

cc_proto_library(
    name = "hmac_cc_proto",
    deps = [":hmac_proto"],
)

java_proto_library(
    name = "hmac_java_proto",
    deps = [":hmac_proto"],
)

java_lite_proto_library(
    name = "hmac_java_proto_lite",
    deps = [":hmac_proto"],
)

go_proto_library(
    name = "hmac_go_proto",
    importpath = "github.com/google/tink/proto/hmac_go_proto",
    proto = ":hmac_proto",
    deps = [":common_go_proto"],
)

objc_proto_compile(
    name = "hmac_objc_pb",
    protos = ["hmac.proto"],
    tags = ["manual"],
    deps = [":common_objc_pb"],
)

# -----------------------------------------------
# aes_ctr
# -----------------------------------------------
proto_library(
    name = "aes_ctr_proto",
    srcs = [
        "aes_ctr.proto",
    ],
)

cc_proto_library(
    name = "aes_ctr_cc_proto",
    deps = [":aes_ctr_proto"],
)

java_proto_library(
    name = "aes_ctr_java_proto",
    deps = [":aes_ctr_proto"],
)

java_lite_proto_library(
    name = "aes_ctr_java_proto_lite",
    deps = [":aes_ctr_proto"],
)

go_proto_library(
    name = "aes_ctr_go_proto",
    importpath = "github.com/google/tink/proto/aes_ctr_proto",
    proto = ":aes_ctr_proto",
)

objc_proto_compile(
    name = "aes_ctr_objc_pb",
    protos = ["aes_ctr.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# aes_ctr_hmac_aead
# -----------------------------------------------
proto_library(
    name = "aes_ctr_hmac_aead_proto",
    srcs = [
        "aes_ctr_hmac_aead.proto",
    ],
    deps = [
        ":aes_ctr_proto",
        ":hmac_proto",
    ],
)

cc_proto_library(
    name = "aes_ctr_hmac_aead_cc_proto",
    deps = [":aes_ctr_hmac_aead_proto"],
)

java_proto_library(
    name = "aes_ctr_hmac_aead_java_proto",
    deps = [":aes_ctr_hmac_aead_proto"],
)

java_lite_proto_library(
    name = "aes_ctr_hmac_aead_java_proto_lite",
    deps = [":aes_ctr_hmac_aead_proto"],
)

go_proto_library(
    name = "aes_ctr_hmac_aead_go_proto",
    importpath = "github.com/google/tink/proto/aes_ctr_hmac_aead_proto",
    proto = ":aes_ctr_hmac_aead_proto",
    deps = [
        ":aes_ctr_go_proto",
        ":hmac_go_proto",
    ],
)

objc_proto_compile(
    name = "aes_ctr_hmac_aead_objc_pb",
    protos = ["aes_ctr_hmac_aead.proto"],
    tags = ["manual"],
    deps = [
        ":aes_ctr_objc_pb",
        ":hmac_objc_pb",
    ],
)

# -----------------------------------------------
# aes_gcm
# -----------------------------------------------
proto_library(
    name = "aes_gcm_proto",
    srcs = [
        "aes_gcm.proto",
    ],
)

cc_proto_library(
    name = "aes_gcm_cc_proto",
    deps = [":aes_gcm_proto"],
)

java_proto_library(
    name = "aes_gcm_java_proto",
    deps = [":aes_gcm_proto"],
)

java_lite_proto_library(
    name = "aes_gcm_java_proto_lite",
    deps = [":aes_gcm_proto"],
)

go_proto_library(
    name = "aes_gcm_go_proto",
    importpath = "github.com/google/tink/proto/aes_gcm_go_proto",
    proto = ":aes_gcm_proto",
)

objc_proto_compile(
    name = "aes_gcm_objc_pb",
    protos = ["aes_gcm.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# aes_ctr_hmac_streaming
# -----------------------------------------------
proto_library(
    name = "aes_ctr_hmac_streaming_proto",
    srcs = ["aes_ctr_hmac_streaming.proto"],
    deps = [
        ":common_proto",
        ":hmac_proto",
    ],
)

cc_proto_library(
    name = "aes_ctr_hmac_streaming_cc_proto",
    deps = [":aes_ctr_hmac_streaming_proto"],
)

java_proto_library(
    name = "aes_ctr_hmac_streaming_java_proto",
    deps = [":aes_ctr_hmac_streaming_proto"],
)

java_lite_proto_library(
    name = "aes_ctr_hmac_streaming_java_proto_lite",
    deps = [":aes_ctr_hmac_streaming_proto"],
)

go_proto_library(
    name = "aes_ctr_hmac_streaming_go_proto",
    importpath = "github.com/google/tink/proto/aes_ctr_hmac_streaming_proto",
    proto = ":aes_ctr_hmac_streaming_proto",
    deps = [
        ":common_go_proto",
        ":hmac_go_proto",
    ],
)

objc_proto_compile(
    name = "aes_ctr_hmac_streaming_objc_pb",
    protos = ["aes_ctr_hmac_streaming.proto"],
    tags = ["manual"],
    deps = [
        ":common_objc_pb",
        ":hmac_objc_pb",
    ],
)

# -----------------------------------------------
# aes_gcm_hkdf_streaming
# -----------------------------------------------
proto_library(
    name = "aes_gcm_hkdf_streaming_proto",
    srcs = ["aes_gcm_hkdf_streaming.proto"],
    deps = [":common_proto"],
)

cc_proto_library(
    name = "aes_gcm_hkdf_streaming_cc_proto",
    deps = [":aes_gcm_hkdf_streaming_proto"],
)

java_proto_library(
    name = "aes_gcm_hkdf_streaming_java_proto",
    deps = [":aes_gcm_hkdf_streaming_proto"],
)

java_lite_proto_library(
    name = "aes_gcm_hkdf_streaming_java_proto_lite",
    deps = [":aes_gcm_hkdf_streaming_proto"],
)

go_proto_library(
    name = "aes_gcm_hkdf_streaming_go_proto",
    importpath = "github.com/google/tink/proto/aes_gcm_hkdf_streaming_proto",
    proto = ":aes_gcm_hkdf_streaming_proto",
    deps = [":common_go_proto"],
)

objc_proto_compile(
    name = "aes_gcm_hkdf_streaming_objc_pb",
    protos = ["aes_gcm_hkdf_streaming.proto"],
    tags = ["manual"],
    deps = [
        ":common_objc_pb",
    ],
)

# -----------------------------------------------
# aes_eax
# -----------------------------------------------
proto_library(
    name = "aes_eax_proto",
    srcs = [
        "aes_eax.proto",
    ],
)

cc_proto_library(
    name = "aes_eax_cc_proto",
    deps = [":aes_eax_proto"],
)

java_proto_library(
    name = "aes_eax_java_proto",
    deps = [":aes_eax_proto"],
)

java_lite_proto_library(
    name = "aes_eax_java_proto_lite",
    deps = [":aes_eax_proto"],
)

go_proto_library(
    name = "aes_eax_go_proto",
    importpath = "github.com/google/tink/proto/aes_eax_proto",
    proto = ":aes_eax_proto",
)

objc_proto_compile(
    name = "aes_eax_objc_pb",
    protos = ["aes_eax.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# chacha20_poly1305
# -----------------------------------------------
proto_library(
    name = "chacha20_poly1305_proto",
    srcs = [
        "chacha20_poly1305.proto",
    ],
)

cc_proto_library(
    name = "chacha20_poly1305_cc_proto",
    deps = [":chacha20_poly1305_proto"],
)

java_proto_library(
    name = "chacha20_poly1305_java_proto",
    deps = [":chacha20_poly1305_proto"],
)

java_lite_proto_library(
    name = "chacha20_poly1305_java_proto_lite",
    deps = [":chacha20_poly1305_proto"],
)

go_proto_library(
    name = "chacha20_poly1305_go_proto",
    importpath = "github.com/google/tink/proto/chacha20_poly1305_proto",
    proto = ":chacha20_poly1305_proto",
)

objc_proto_compile(
    name = "chacha20_poly1305_objc_pb",
    protos = ["chacha20_poly1305.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# kms_aead
# -----------------------------------------------
proto_library(
    name = "kms_aead_proto",
    srcs = [
        "kms_aead.proto",
    ],
)

cc_proto_library(
    name = "kms_aead_cc_proto",
    deps = [":kms_aead_proto"],
)

java_proto_library(
    name = "kms_aead_java_proto",
    deps = [":kms_aead_proto"],
)

java_lite_proto_library(
    name = "kms_aead_java_proto_lite",
    deps = [":kms_aead_proto"],
)

go_proto_library(
    name = "kms_aead_go_proto",
    importpath = "github.com/google/tink/proto/kms_aead_proto",
    proto = ":kms_aead_proto",
)

objc_proto_compile(
    name = "kms_aead_objc_pb",
    protos = ["kms_aead.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# kms_envelope
# -----------------------------------------------
proto_library(
    name = "kms_envelope_proto",
    srcs = [
        "kms_envelope.proto",
    ],
    deps = [":tink_proto"],
)

cc_proto_library(
    name = "kms_envelope_cc_proto",
    deps = [":kms_envelope_proto"],
)

java_proto_library(
    name = "kms_envelope_java_proto",
    deps = [":kms_envelope_proto"],
)

java_lite_proto_library(
    name = "kms_envelope_java_proto_lite",
    deps = [":kms_envelope_proto"],
)

go_proto_library(
    name = "kms_envelope_go_proto",
    importpath = "github.com/google/tink/proto/kms_envelope_proto",
    proto = ":kms_envelope_proto",
    deps = [":tink_go_proto"],
)

objc_proto_compile(
    name = "kms_envelope_objc_pb",
    protos = ["kms_envelope.proto"],
    tags = ["manual"],
    deps = [
        ":tink_objc_pb",
    ],
)

# -----------------------------------------------
# ecies_aead_hkdf
# -----------------------------------------------
proto_library(
    name = "ecies_aead_hkdf_proto",
    srcs = [
        "ecies_aead_hkdf.proto",
    ],
    deps = [
        ":common_proto",
        ":tink_proto",
    ],
)

cc_proto_library(
    name = "ecies_aead_hkdf_cc_proto",
    deps = [":ecies_aead_hkdf_proto"],
)

java_proto_library(
    name = "ecies_aead_hkdf_java_proto",
    deps = [":ecies_aead_hkdf_proto"],
)

java_lite_proto_library(
    name = "ecies_aead_hkdf_java_proto_lite",
    deps = [":ecies_aead_hkdf_proto"],
)

go_proto_library(
    name = "ecies_aead_hkdf_go_proto",
    importpath = "github.com/google/tink/proto/ecies_aead_hkdf_proto",
    proto = ":ecies_aead_hkdf_proto",
    deps = [
        ":common_go_proto",
        ":tink_go_proto",
    ],
)

objc_proto_compile(
    name = "ecies_aead_hkdf_objc_pb",
    protos = ["ecies_aead_hkdf.proto"],
    tags = ["manual"],
    deps = [
        ":common_objc_pb",
        ":tink_objc_pb",
    ],
)

# -----------------------------------------------
# XChacha20 with Poly1305
# -----------------------------------------------
proto_library(
    name = "xchacha20_poly1305_proto",
    srcs = [
        "xchacha20_poly1305.proto",
    ],
)

cc_proto_library(
    name = "xchacha20_poly1305_cc_proto",
    deps = [":xchacha20_poly1305_proto"],
)

java_proto_library(
    name = "xchacha20_poly1305_java_proto",
    deps = [":xchacha20_poly1305_proto"],
)

java_lite_proto_library(
    name = "xchacha20_poly1305_java_proto_lite",
    deps = [":xchacha20_poly1305_proto"],
)

go_proto_library(
    name = "xchacha20_poly1305_go_proto",
    importpath = "github.com/google/tink/proto/xchacha20_poly1305_go_proto",
    proto = ":xchacha20_poly1305_proto",
)

objc_proto_compile(
    name = "xchacha20_poly1305_objc_pb",
    protos = ["xchacha20_poly1305.proto"],
    tags = ["manual"],
)

# -----------------------------------------------
# objc library
# -----------------------------------------------
tink_objc_proto_library(
    name = "all_objc_proto",
    srcs = [
        ":aes_ctr_hmac_aead_objc_pb",
        ":aes_ctr_hmac_streaming_objc_pb",
        ":aes_ctr_objc_pb",
        ":aes_eax_objc_pb",
        ":aes_gcm_hkdf_streaming_objc_pb",
        ":aes_gcm_objc_pb",
        ":chacha20_poly1305_objc_pb",
        ":common_objc_pb",
        ":config_objc_pb",
        ":ecdsa_objc_pb",
        ":ecies_aead_hkdf_objc_pb",
        ":ed25519_objc_pb",
        ":hmac_objc_pb",
        ":kms_aead_objc_pb",
        ":kms_envelope_objc_pb",
        ":tink_objc_pb",
        ":xchacha20_poly1305_objc_pb",
    ],
    tags = ["manual"],
)
